/*
Autor: Alexander Savochkin, 2010
New BSD License
*/

#pragma once

#include <string>
#include <boost/date_time/posix_time/posix_time.hpp>
//Abstract class 
//This function defines interface to regulated object

using std::string;
using namespace boost::posix_time;

namespace SRCLF 
{
namespace IO
{

  	/**
	@class IOperatedInput
	@brief Abstract class which represents "input" for regulator
	*/
	class IOperatedInput
	{
	public:
		IOperatedInput(){};
		virtual ~IOperatedInput() {};

		//
		virtual bool open() = 0;
		virtual void close() = 0;

		virtual double getInput() = 0;

		virtual void update(const ptime&) = 0;

		virtual void adminCommand(const string& command, string& result) = 0;
		virtual void controlCommand(const string& command, string& result) = 0;
		virtual void infoCommand(const string& command, string& result) = 0;
	};

} //namespace IO
} //namespace SRCLF